﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using SouthApps.MobileHealth.SDK.DAL.Model;

namespace SouthApps.MobileHealth.SDK.DAL.DataAccess
{
    public class PrestadorDao : DataAccessObject
    {
        #region Get
        
        public Prestador GetPrestador(int prestadorId)
        {
            try
            {
                using (var entities = this.EntityContext)
                {
                    return entities.prestador.FirstOrDefault(e =>
                        e.prestadorId == prestadorId);
                }
            }
            catch (Exception ex)
            {
                throw this.HandleException(ex);
            }
        }

        public List<Prestador> GetPrestadoresFinanciador(int financiadorId)
        {
            return this.GetPrestadoresFinanciador(financiadorId, true);
        }

        public List<Prestador> GetPrestadoresFinanciador(int financiadorId, bool activo)
        {
            try
            {
                using (var entities = this.EntityContext)
                {
                    var query = from e in entities.prestador
                                where (e.financiadorId == financiadorId && e.activo == activo)
                                select e;

                    return query.ToList();
                }
            }
            catch (Exception ex)
            {
                throw this.HandleException(ex);
            }
        }

        #endregion

        #region Add

        public void AddPrestador(Prestador prestador)
        {
            try
            {
                using (var entities = this.EntityContext)
                {
                    entities.AddToprestador(prestador);
                    this.SaveChanges(entities);
                }
            }
            catch (Exception ex)
            {
                throw this.HandleException(ex);
            }
        }

        #endregion

        #region Modify

        public void ModifyPrestador(Prestador prestador)
        {
            try
            {
                using (var entities = this.EntityContext)
                {
                    Prestador oldPrestador = entities.prestador.FirstOrDefault(e => e.prestadorId == prestador.prestadorId);
                    oldPrestador = prestador;

                    this.SaveChanges(entities);
                }
            }
            catch (Exception ex)
            {
                throw this.HandleException(ex);
            }
        }

        #endregion
    }
}
